package com.yourenbang.lingyun.transaction.web.service.manage;

import com.yourenbang.lingyun.core.message.Result;
import com.yourenbang.lingyun.transaction.web.domain.dto.manage.*;
import com.yourenbang.transaction.api.model.dto.manage.QueryClientFirstPageStatisticsDTO;
import com.yourenbang.transaction.api.model.dto.manage.QueryClientPledgeListDTO;
import com.yourenbang.transaction.api.model.vo.manage.QueryClientHomePageStatisticsVO;
import org.springframework.web.multipart.MultipartFile;

import java.util.Arrays;
import java.util.List;

/**
 * @Description
 * @Date 2021/1/4 13:38
 * @Created by Jason
 */
public interface ManageTradeService {
    /**
     * 银小云机构号集合
     */
    List<String> YXY_AGENT_IDS = Arrays.asList("S33100112172617", "S33100112703935");
    /**
     * 基梯机构号集合
     */
    List<String> JT_AGENT_IDS = Arrays.asList("S33100112892601", "S33100112893053");
    /**
     * 管理后台交易列表
     * @param dto
     * @return
     */
    Result tradeList(TradeManageDTO dto);

    /**
     * 机构后台交易列表
     * @param dto 查询条件
     * @return 明细列表
     */
    Result clientTradeList(TradeManageDTO dto);

    /**
     * 基梯后台交易统计
     * @param dto 查询条件
     * @return
     */
    Result clientTradeStatistics(TradeManageDTO dto);

    /**
     * 管理后台交易详情
     * @param dto
     * @return
     */
    Result tradeDetail(TradeManageDetailDTO dto);

    /**
     * 补录交易
     * @param tradeSupplementDTO
     * @return
     */
    Result tradeSupplement(TradeSupplementDTO tradeSupplementDTO);

    /**
     * 批量补录交易模板
     * @return
     */
    void batchTradeSupplementTemplate();

    /**
     * 批量补录交易
     * @param file
     * @return
     */
    Result batchTradeSupplement(MultipartFile file,String operator);

    /**
     * m40交易补录
     */
    Result batchTradeSupplementM40(MultipartFile file, String operator, String mail);

    /**
     * 添加m40交易文件地址到redis失败
     * @param fileUrl 地址
     * @return 是否添加成功
     */
    boolean addM40TradeFileToRedis(String fileUrl);

    /**
     * 从redis中读取交易地址并批量处理m40交易
     */
    void batchTradeSupplementM40FromRedis();

    /**
     * 补录结果列表
     * @param tradeSupplementResultListDTO
     * @return
     */
    Result tradeSupplementResultList(TradeSupplementResultListDTO tradeSupplementResultListDTO);

    /**
     * 查询终端（基梯）押金对账列表
     * @param dto 查询条件
     * @return 押金列表
     */
    Result queryClientPledgeList(QueryClientPledgeListDTO dto);

    /**
     * 查询终端（基梯）押金对账 统计
     * @param dto 查询条件
     * @return 统计结果
     */
    Result queryClientPledgeStatistics(QueryClientPledgeListDTO dto);

    /**
     * 基梯后台的首页统计
     * @param dto 查询条件
     * @return 统计结果
     */
    Result<QueryClientHomePageStatisticsVO> queryClientFirstPageStatistics(QueryClientFirstPageStatisticsDTO dto);

    /**
     * 获取所有卡类型
     */
    Result getAllCardFlag();

    /**
     * 修复卡类型
     */
    Result correctCardFlag(CorrectCardFlagDTO correctCardFlagDTO);

    /**
     * 获取所有费率类型
     */
    Result getAllRate();

    /**
     * 获取所有交易状态
     */
    Result getAllTransactionStatus();

}
